package xyz.syyrjx.provider.filter;

import xyz.syyrjx.request.SyyrjxRpcCallRequest;
import xyz.syyrjx.filter.SyyrjxDefaultSafeFilter;
import xyz.syyrjx.filter.SyyrjxRpcFilter;

import java.util.LinkedList;

/**
 * 提供者服务器过滤器链
 * @author 大地崩坏苍蝇兽
 * @date 2023/1/6 - 18:50
 */

public class SyyrjxRpcProviderServerFilterLinkedList {

    private LinkedList<SyyrjxRpcFilter> filterList = new LinkedList<>();

    public void addFilter(SyyrjxRpcFilter filter) {
        filterList.add(filter);
    }

    public void removeFilter(SyyrjxRpcFilter filter) {
        filterList.remove(filter);
    }

    public boolean preVerify(SyyrjxRpcCallRequest request){
        for (SyyrjxRpcFilter filter : filterList) {
            if (!filter.pre(request)) {
                return false;
            }
        }
        return true;
    }

    {
        filterList.add(new SyyrjxDefaultSafeFilter());
    }

}
